/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InvalidClassException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

/**
 * Clase encargada de la persistencia de los datos
 * de los servidores, que lee y escribe en el directorio especificado.
 * @author zulema
 * @version 1.1.1
 */
public class Archivo {
    private File archivo;
    
    /**
     * Constructor de la clase. Recibe un el nombre de la carpeta
     * y el nombre del archivo a guardar dentro de la carpeta especificada.
     * @param carpeta nombre de la carpeta donde se guardara el archivo.
     * @param archivo nombre del archivo que se guardara.
     */
    public Archivo(String carpeta,String archivo) {
        File carpt = new File(carpeta);
        carpt.mkdir();
        this.archivo = new File(carpt, archivo);
    }
    
    /**
     * Guarda en disco el objeto pasado por parametro.
     * @param objGuardar Objeto a guardar en disco.
     * @return 
     */
    public boolean escribir(Object objGuardar){
        try {
            FileOutputStream objectGuardar = new FileOutputStream(archivo);
            ObjectOutputStream salida = new ObjectOutputStream(objectGuardar);
            salida.writeObject(objGuardar);
            salida.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    /**
     * Lee el objeto especificado en el archivo 
     * de la carpeta de los atributos. y lo devuelve.
     * @return 
     */
    public Object leer(){
        Object resultado=null;
        try {
            if (archivo.exists()) {
                FileInputStream objLeer = new FileInputStream(archivo);
                ObjectInputStream entrada = new ObjectInputStream(objLeer);
                resultado = entrada.readObject();
            }            
        }
        catch (Exception e) {
            e.printStackTrace();
        } 
        return resultado;
    }
}
